import request from "../utils/request";

/**
 * 封装服务中心管理相关的API请求
 */
class ServiceCenterRequest {

    /**
     * 新增服务中心
     * @param {string} centerCode - 中心代码，唯一
     * @param {string} centerName - 中心名称
     * @param {string} address - 详细地址
     * @param {string} contactPerson - 联系人
     * @param {string} contactPhone - 联系电话
     * @param {string} serviceScope - 服务范围描述
     * @returns {Promise<object>} - 创建成功的服务中心对象
     */
    async add(centerCode, centerName, address, contactPerson, contactPhone, serviceScope) {
        const newCenter = await request({
            url: '/service-centers',
            method: 'post',
            data: {
                centerCode,
                centerName,
                address,
                contactPerson,
                contactPhone,
                serviceScope
            },
        });
        return newCenter;
    }

    /**
     * 查询服务中心列表
     * @param {object} [options={}] - 包含分页和筛选参数的对象
     * @param {number} [options.page=1] - 页码
     * @param {number} [options.size=10] - 每页数量
     * @param {string} [options.centerName] - 按中心名称模糊查询
     * @returns {Promise<object>} - 标准分页列表数据
     */
    async getList({ page, size, centerName } = {}) {
        const listData = await request({
            url: '/service-centers',
            method: 'get',
            params: {
                page,
                size,
                centerName
            },
        });
        return listData;
    }

    /**
     * 获取单个服务中心详情
     * @param {number|string} id - 服务中心ID
     * @returns {Promise<object>} - 单个服务中心详情
     */
    async getById(id) {
        const centerDetail = await request({
            url: `/service-centers/${id}`,
            method: 'get',
        });
        return centerDetail;
    }

    /**
     * 更新服务中心信息
     * @param {number|string} id - 要更新的服务中心ID
     * @param {object} centerData - 包含待更新字段的对象
     * @returns {Promise<object>} - 更新后的服务中心对象
     */
    async update(id, centerData) {
        const updatedCenter = await request({
            url: `/service-centers/${id}`,
            method: 'put',
            data: centerData,
        });
        return updatedCenter;
    }

    /**
     * 删除服务中心
     * @param {number|string} id - 要删除的服务中心ID
     * @returns {Promise<null>}
     */
    async delete(id) {
        const result = await request({
            url: `/service-centers/${id}`,
            method: 'delete',
        });
        return result;
    }
}

// 导出类的实例，方便在其他地方直接调用方法
export default new ServiceCenterRequest();